From 772ac2b0c587b9bd0927d339550341a547b70057 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 30 Dec 2019 09:52:13 -0500 Subject: [PATCH] tooltip: Never set a window to be its own parent We do get events on the tooltip window too, and we better ignore them, or bad things may happen, such as widgets that are their own parents and cause infinite loops. Fixes: https://gitlab.gnome.org/GNOME/gtk/issues/2339 --- gtk/gtktooltip.c | 3 +++ gtk/gtktooltipwindow.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c index 88cf89651d..1112e6a374 100644 --- a/gtk/gtktooltip.c +++ b/gtk/gtktooltip.c @@ -495,6 +495,9 @@ gtk_tooltip_set_surface (GtkTooltip *tooltip, if (tooltip->native == native) return; + if (GTK_IS_TOOLTIP_WINDOW (native)) + return; + if (tooltip->native) g_object_weak_unref (G_OBJECT (tooltip->native), native_weak_notify, tooltip); diff --git a/gtk/gtktooltipwindow.c b/gtk/gtktooltipwindow.c index 28e63d095f..2467657889 100644 --- a/gtk/gtktooltipwindow.c +++ b/gtk/gtktooltipwindow.c @@ -558,6 +558,8 @@ void gtk_tooltip_window_set_relative_to (GtkTooltipWindow *window, GtkWidget *relative_to) { + g_return_if_fail (GTK_WIDGET (window) != relative_to); + if (window->relative_to == relative_to) return; -- 2.30.2